package com.supms.course.service.impl;

import java.util.List;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.supms.course.mapper.PaperReviewMapper;
import com.supms.course.domain.PaperReview;
import com.supms.course.service.IPaperReviewService;

/**
 * 论文(毕设)复查Service业务层处理
 * 
 * @author LiangHao
 * @date 2022-03-12
 */
@Service
public class PaperReviewServiceImpl implements IPaperReviewService 
{
    @Autowired
    private PaperReviewMapper paperReviewMapper;

    /**
     * 查询论文(毕设)复查
     * 
     * @param id 论文(毕设)复查主键
     * @return 论文(毕设)复查
     */
    @Override
    public PaperReview selectPaperReviewById(Long id)
    {
        return paperReviewMapper.selectPaperReviewById(id);
    }

    /**
     * 查询论文(毕设)复查列表
     * 
     * @param paperReview 论文(毕设)复查
     * @return 论文(毕设)复查
     */
    @Override
    public List<PaperReview> selectPaperReviewList(PaperReview paperReview)
    {
        String operName = SecurityUtils.getUsername();
        paperReview.setCreateBy(operName);
        return paperReviewMapper.selectPaperReviewList(paperReview);
    }

    /**
     * 新增论文(毕设)复查
     * 
     * @param paperReview 论文(毕设)复查
     * @return 结果
     */
    @Override
    public int insertPaperReview(PaperReview paperReview)
    {
        String operName = SecurityUtils.getUsername();
        paperReview.setCreateBy(operName);
        paperReview.setSupName(paperReviewMapper.getSupNameByOperName(operName));
        paperReview.setCreateTime(DateUtils.getNowDate());
        return paperReviewMapper.insertPaperReview(paperReview);
    }

    /**
     * 修改论文(毕设)复查
     * 
     * @param paperReview 论文(毕设)复查
     * @return 结果
     */
    @Override
    public int updatePaperReview(PaperReview paperReview)
    {
        String operName = SecurityUtils.getUsername();
        paperReview.setUpdateBy(operName);
        paperReview.setUpdateTime(DateUtils.getNowDate());
        return paperReviewMapper.updatePaperReview(paperReview);
    }

    /**
     * 批量删除论文(毕设)复查
     * 
     * @param ids 需要删除的论文(毕设)复查主键
     * @return 结果
     */
    @Override
    public int deletePaperReviewByIds(Long[] ids)
    {
        // 判断课程目标达成度检查表中是否做了评价，有则先删除评价表
        Long[] haveIds = paperReviewMapper.selectPaperReviewEvalFlagByIds(ids);
        if (haveIds.length > 0) {
            paperReviewMapper.deletePaperReviewEvalByIds(haveIds);
        }
        return paperReviewMapper.deletePaperReviewByIds(ids);
    }

    /**
     * 删除论文(毕设)复查信息
     * 
     * @param id 论文(毕设)复查主键
     * @return 结果
     */
    @Override
    public int deletePaperReviewById(Long id)
    {
        return paperReviewMapper.deletePaperReviewById(id);
    }

    /**
     * 获取本科毕业论文(设计)复查记录表（数据综合查看表）
     *
     * @param paperReview 接收到要查看表的对象
     * @return 表内容及评价结果对象
     */
    @Override
    public PaperReview getPaperReviewTable(PaperReview paperReview) {
        // 判断是否已经评价，没有评价的话不查询评价结果
        String paperReviewEvalFlag = paperReview.getPaperReviewEvalFlag();
        // "0" 为未评价，"1" 为已评价
        if ("0".equals(paperReviewEvalFlag)) {
            return paperReviewMapper.getPaperReviewTable0(paperReview);
        } else if ("1".equals(paperReviewEvalFlag)) {
            return paperReviewMapper.getPaperReviewTable1(paperReview);
        } else return null;
    }
}
